/**
 * 验证服务模块 - 处理登录、授权相关功能
 */
import api from '@/api/index';

/**
 * 检查登录状态
 * @returns {Object} 登录状态信息
 */
export function checkLoginStatus() {
  try {
    const userInfoStr = uni.getStorageSync('userInfo')
    if (userInfoStr) {
      return {
        isLoggedIn: true,
        userInfo: JSON.parse(userInfoStr)
      }
    }
    return {
      isLoggedIn: false,
      userInfo: null
    }
  } catch (error) {
    console.error('获取登录状态失败', error)
    return {
      isLoggedIn: false,
      userInfo: null
    }
  }
}

/**
 * 处理微信登录
 * @param {Object} userInfo 用户信息
 * @returns {Promise} 登录结果
 */
export function handleWechatLogin(userInfo) {
  return new Promise((resolve, reject) => {
    uni.showLoading({
      title: '登录中...'
    })
    
    // 调用微信登录接口
    uni.login({
      provider: 'weixin',
      success: async (loginRes) => {
        const code = loginRes.code
        console.log('获取微信临时登录凭证成功：', code);
        
        try {
          // 调用后端登录接口
          const result = await api.auth.login(code);
          console.log(result);
          
          // 构建完整用户信息
          const fullUserInfo = {
            // 如果传入了userInfo则合并，否则使用接口返回的数据
            ...(userInfo || {}),
            userId: result.userId,
            isNewUser: result.isNewUser
          };
          
          // 存储用户信息和token
          uni.setStorageSync('userInfo', JSON.stringify(fullUserInfo));
          uni.setStorageSync('apiKey', 'ragflow-IyNmI3NjZjMDNiZTExZjA5YjQ5MDI0Mm');
          uni.setStorageSync('sessionId', result.sessionId);
          uni.setStorageSync('chatId', result.chatId);
          uni.setStorageSync('datasetId', result.datasetId);
          uni.setStorageSync('token', result.token);
          uni.setStorageSync('agentId', result.agentId);
          uni.setStorageSync('agentSessionId', result.agentSessionId);
          
          uni.hideLoading();
          uni.showToast({
            title: '登录成功',
            icon: 'success'
          });
          
          resolve({
            success: true,
            userInfo: fullUserInfo
          });
        } catch (error) {
          console.error('后端登录失败', error);
          uni.hideLoading();
          uni.showToast({
            title: error.message || '登录失败',
            icon: 'none'
          });
          reject(error);
        }
      },
      fail: (err) => {
        console.error('微信登录失败', err)
        uni.hideLoading()
        uni.showToast({
          title: '登录失败',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

/**
 * 退出登录
 * @returns {Promise} 退出结果
 */
export function logout() {
  return new Promise((resolve) => {
    try {
      uni.removeStorageSync('userInfo')
      uni.showToast({
        title: '已退出登录',
        icon: 'success'
      })
      resolve({
        success: true
      })
    } catch (error) {
      console.error('退出登录失败', error)
      resolve({
        success: false,
        error
      })
    }
  })
} 


